package done.easy_501_600;

import com.study.common.TreeNode;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

/**
 * 572. Subtree of Another Tree 另一个树的子树
 * 给定两个非空二叉树 s 和 t，检验 s 中是否包含和 t 具有
 * 相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和
 * 这个节点的所有子孙。s 也可以看做它自身的一棵子树。
 * <p>
 * 示例 1:
 * 给定的树 s:
 * <p>
 * 3
 * / \
 * 4   5
 * / \
 * 1   2
 * <p>
 * 给定的树 t：
 * <p>
 * 4
 * / \
 * 1   2
 * <p>
 * 返回 true，因为 t 与 s 的一个子树拥有相同的结构和节点值
 *
 * @author 大硕
 * 2019-03-30 8:35 PM
 **/
@Slf4j
public class SubtreeOfAnotherTree {

    @SuppressWarnings("all")
    public boolean isSubtree(TreeNode s, TreeNode t) {
        // 190330 first
        return false;
    }

    @Test
    public void test() {
        TreeNode s = new TreeNode(3,
                new TreeNode(4,
                        1, 2), 5);
        TreeNode t = new TreeNode(4,
                1, 2);
        log.info("{}", isSubtree(s, t));
    }
}




























/*
public boolean isSubtree(TreeNode s, TreeNode t) {
    if (s==null || t==null)
        return false;

    if (treeEqual(s,t))
        return true;
    else
        return isSubtree(s.left,t) || isSubtree(s.right,t);
}

private boolean treeEqual(TreeNode s, TreeNode t){
    if (s==null && t==null)
        return true;

    if (s!=null && t!=null && s.val==t.val)
        return treeEqual(s.right,t.right) && treeEqual(s.left,t.left);
    return false;
}
*/
